[上級編]LLMへ至る道~GPT-3の話~[22日目]
みなさんこんにちは!クルトンです。
前日のブログでは、GPT-2についてご紹介いたしました。GPTからパラメータ数や学習データ量を増やす事で精度の高い機械学習モデルが作れたというお話でした。
本日ご紹介するのはGPT-2からさらに進化を遂げたGPT-3についてです!
GPT-3とは?GPT-2との違い
GPT-2の約1年後にGPT-3について書かれた論文が公開されました。
論文を確認するにはまず公式GitHubにアクセスします。
次に公式GitHubにある論文タイトル『Language Models are Few-Shot Learners 』のリンクをクリックすると論文をチェックできます。
論文タイトルのFew-Shotなどについては後ほど本ブログで確認していきます。
ちなみに、論文の著者名を確認すると、GPTの論文で著者になっていた人やGPT-2の論文で著者になっていた人たちも、GPT-3の論文では著者名に書かれています。総勢31名による論文です。とても大きなプロジェクトですね……!論文も75ページと大ボリュームです。
GPT-2と比較すると、GPT-3ではさまざまな事が変わりましたがまずは3点だけ書いてみます。
- パラメータ数の増加
- 学習データの増加
- あなたがGPTにさせたいお仕事に関するデータは少量で良い
パラメータ数の増加
パラメータが大きく変わりました。15億個から1750億個です。 GPTの時から随分と多くのパラメータを使うようになりました。なぜ機械学習モデルの規模を大きく(パラメータ数を多く)するかというと、 スケール則(scaling laws) というものがあるからです。
スケール則は「モデルの規模、データセットを大きくすると、良い精度が出せるぞ!」という内容です。 だからこそ、GPTの時からドンドンとパラメータ数を増やしているのですね。
学習データの増加
GPT-2ではWeb Textというデータセットを作成し、40GBのテキストファイルを使って学習していました。
GPT-3ではさらに大量のデータを使っており、1兆近くもの単語数を扱うデータセットを使用しています。45TBものデータをWebから集め、品質が低いと判断されるデータをふるい落とし、570GBのデータになったそうです。使われているデータについてはGPT-2でも使っていたWeb Textを拡張したものなども含みます。
あなたがGPTにさせたいお仕事に関するデータは少量で良い
今までの機械学習モデルだと、何万件以上というデータを集める必要がありました。それだけのデータを使う事で、良い精度の機械学習モデルを作っていたわけです。
そこから時代が進むと、BERTなどのモデルがFine-tuningという手法を使うようになります。何万件以上も必要だったデータが数千件使えばよくなりました。
とはいえ、まだデータ集めに労力が必要でした。
今回ご紹介しているGPT-3についてですが『Few-shot学習』というもので予測精度が良くなります。 "few"という英単語は「ほとんどない」という意味合いを持ちますが、たった数件のデータでOKです。
GPT-3の中身をチェック!
簡単に書くと、GPT-3はGPT-2にSparse Transformerというモデルを適用したものになります。
GPT-3の中身について図示します。
ほとんど変わっていませんね。Sparce Transformerについて簡単に説明します。
Sparse Transfromerについて簡単に
以下の論文で紹介されているものになります。
Transformerモデルについて、次の単語を予測するとき、いつもそれ以前のトークンを見つつしていましたね。ただし、それだと計算する対象のトークン数が増えてくると計算させるだけでもコンピュータリソースをドンドン使っていってしまいます。
Sparse Transformerでは従来型と比較すると以下のようなイメージになります。
ある程度の間隔でデータを見るようにして、計算するときの対象を少なくする工夫をしています!これは、それまでの情報なら後ろのトークンが計算した時にすでに見ているだろうから、それで十分だろうぜ!という想定です。
Multi-head Attentionの軽量化に成功しているものがSparse Transformerです。
ちなみに要所要所のデータを使うようにしたときに精度がガクンと下がる、なんて事がなくほとんど精度には影響がなかったというナイスな研究結果が出ています。Sparse Trasformerを使えば精度をあまり落とさずに計算が早く終わるんですね。
学習方法いろいろ
最初の方にFew-shotというものについてお伝えしました。 これは数件のデータを示すだけでOKというものでしたね。 他にも関連する用語があるので、まとめます。
- few-shot学習
- 数件のデータを例示する
- 文脈内学習とも呼ばれる
- one-shot学習
- 1件のデータを例示する
- zero-shot学習
- 1件もデータを例示せずに本題を話す
上記内容で一つ違和感を覚えて欲しいのは、それぞれの学習に関しての説明書きについてです。学習するとは書かずに、例示すると書いています。そう、GPT-3では学習をしなくてOKなのです!
少し分かりづらいかもしれないので、イメージにしてみます。
GPT-3に対して指示を出す、プロンプトと呼ばれる入力を与えるとそれに適した後続の内容を出力してくれます! (プロンプトで指示を出すなど、ChatGPTに関わりのある内容に近づいてますね!)
入力している文の数がshotの前に書かれているイメージです。
ちなみにzero-shot学習よりもfew-shot学習の方が精度の高い推論ができるようです。 (個人的には、この経験がChatGPTの裏で使われているモデルに活かされているように思います。)
GPT-3の性能はどんなもんだ?
一部ですが、GPT-3の性能の高さを表すものをこちらで紹介します!
論文の表を引用します。
表の見方ですが、Settingの下に書いているのは各モデルで、SOTAは実験当時一番良い結果を出しているモデルの事を表します(SOTAというモデル名ではなく、英語でいうところのitみたいなものです)。(acc)が正答率、(ppl)がperplexityです。
StoryClozeは5文からなる物語で終わりとして正しい文はどれかを選択するものです。SOTAには負けていますが、few-shot学習だとそこそこ迫っていますね。
HellaSwagは常識問題集のようなもので、人間だったら常識として簡単に答えられるものを集めたものです。こちらもStoryClozeと似た結果ですね。
LAMBADAは昨日のGPT-2のブログでもご紹介したものですね。GPT-2よりも大幅に記録更新していますね……!
以上のように大規模モデルに大量のデータを渡すと、高い精度の機械学習モデルが作れたというお話でした。 とはいえ、まだ改善の余地がありそうという結論です。
終わりに
本日はざっとGPT-3についてご紹介をしてきました。「GPT-3の全てを知りたいんだ!」という方はぜひ面白いTipsがたくさんある論文本編を読んでみてください。個人的には、誰かが昔言ってたらしい「未来は超巨大コンピュータ1つに集約される」という予想が現実になるのかも、と感じました。
明日は、いよいよ多くの人が見聞きした事があるであろう、ChatGPTの裏側に迫っていきます!
本日はここまで。それでは明日もよければご覧ください!
参考文献
スケール則について書かれている論文です。